package ru.payment.wm;

/**
 * User: sergey
 * Date: 22.04.2009
 * Time: 15:47:10
 *
 * тип перевода (платежа)
 */
public enum OperationType {

  /**  */
  UNKNOWN(-1, "неизвестно"),

  /** исходящий платеж: 0 – обычный */
  OUT_COMMON(0, "обычный (средства успешно переданы от отправителя к получателю)"),

  /** исходящий платеж: 4 – с протекцией (не завершена) */
  OUT_PROTECTED(4, "с протекцией (не завершена)"),

  /** исходящий платеж: 12 – с протекцией (вернулась). */
  OUT_PROTECTED_BACK(12, "платеж с протекцией возвращен, так как срок протекции закончился или превышено кол-во попыток ввода кода протекции (8)"),


  /** входящий платеж: 2 – обычный */
  IN_COMMON(2, "обычный"),

  /** входящий платеж: 6 – с протекцией (не завершена) */
  IN_PROTECTED(6, "с протекцией (не завершена)"),
  
  /** входящий платеж: 14 – с протекцией (вернулась) */
  IN_PROTECTED_BACK(14, "с протекцией (вернулась)");

  private int value;
  private String description;

  OperationType(int v, String d) {
    value = v;
    description = d;
  }

  public int getValue() {
    return value;
  }

  public void setValue(int value) {
    this.value = value;
  }

  public String getDescription() {
    return description;
  }

  public void setDescription(String description) {
    this.description = description;
  }

  @Override
  public String toString() {
    return description;
  }

  public static OperationType getByValue(int v) {
    switch(v) {
      case 0: return OUT_COMMON;
      case 4: return OUT_PROTECTED;
      case 12: return OUT_PROTECTED_BACK;
      case 2: return IN_COMMON;
      case 6: return IN_PROTECTED;
      case 14: return IN_PROTECTED_BACK;
    }
    return UNKNOWN;
  }

}
